TO VIEW CURRENT GRAPHS OF CODE METRICS: 

𝗣𝗔𝗦𝗧𝗘 𝗧𝗢 𝗩𝗜𝗘𝗪 𝗚𝗥𝗔𝗣𝗛𝗦: https://www.canva.com/design/DAGULN4gWtw/_ajpQxG0HnmTlwjRbIK0AQ/view?utm_content=DAGULN4gWtw&utm_campaign=designshare&utm_medium=link&utm_source=editor

***************************************SPRINT 2*************************************

9/22 Code Analysis                9/26 Code Analysis             9/30 Code Analysis
  -EnemySprite                    -EnemySprite                   -EnemySprite
    Maintainability Index: 86       Maintainability Index: 86     Maintainability Index: 86
    Cyclomatic Complexity: 21       Cyclomatic Complexity: 21     Cyclomatic Complexity: 22
    Class Coupling Index:  19       Class Coupling Index:  20     Class Coupling Index:  19

  -Sprite                         -Sprite                        -Sprite
    Maintainability Index: 80       Maintainability Index: 80       Maintainability Index: 80
    Cyclomatic Complexity: 15       Cyclomatic Complexity: 16       Cyclomatic Complexity: 17
    Class Coupling Index:  17       Class Coupling Index:  18       Class Coupling Index:  18

  -KeyboardContr                  -KeyboardContr                 -KeyboardContr
    Maintainability Index: 59      Maintainability Index: 61        Maintainability Index: 51
    Cyclomatic Complexity: 7       Cyclomatic Complexity: 16        Cyclomatic Complexity: 37
    Class Coupling Index:  35      Class Coupling Index:  28        Class Coupling Index:  42

  -itemSprite                     -itemSprite                    -itemSprite
    Maintainability Index: 87      Maintainability Index: 87        Maintainability Index: 88
    Cyclomatic Complexity: 15      Cyclomatic Complexity: 16        Cyclomatic Complexity: 17
    Class Coupling Index:  19      Class Coupling Index:  19        Class Coupling Index:  17

  -teamGame                       -teamGame                      -teamGame
    Maintainability Index: 75      Maintainability Index: 72       Maintainability Index: 71
    Cyclomatic Complexity: 9       Cyclomatic Complexity: 9        Cyclomatic Complexity: 12
    Class Coupling Index:  19      Class Coupling Index:  22       Class Coupling Index:  24

-----------------------------------------------------------------------------------------------
In Sprint 2, the 5 major classes listed above had relatively consistant maintainability, cyclomatic complexity, and class coupling indexes. However, the main issue was the KeyboardContr class.
This class had the highest class coupling index and cyclomatic complexity, although it is a relatively simple class which should not have such a high coupling index. The main takeaway from these analytics is that we need to work to decouple KeyboardContr and have it less reliant on other classes.
-----------------------------------------------------------------------------------------------

*************************************SPRINT 3*****************************************
 10/14/24 Code Analysis         10/15/24 Code Analysis        10/21/24 Code Analysis
  -EnemySprite:                   -EnemySprite:                -EnemySprite:
    Maintainability Index: 78      Maintainability Index: 73    Maintainability Index: 73
    Cyclomatic Complexity: 6       Cyclomatic Complexity: 8     Cyclomatic Complexity: 8
    Class Coupling Index:  10      Class Coupling Index:  14    Class Coupling Index:  14

  -Sprite                         -Sprite                      -Sprite
    Maintainability Index: 78      Maintainability Index: 78    Maintainability Index: 78
    Cyclomatic Complexity: 12      Cyclomatic Complexity: 12    Cyclomatic Complexity: 12
    Class Coupling Index:  16      Class Coupling Index:  9     Class Coupling Index:  9

  -KeyboardContr                  -KeyboardContr                -KeyboardContr
    Maintainability Index: 47      Maintainability Index: 55     Maintainability Index: 71
    Cyclomatic Complexity: 47      Cyclomatic Complexity: 30     Cyclomatic Complexity: 14
    Class Coupling Index:  46      Class Coupling Index:  23     Class Coupling Index:  12

  -itemSprite                     -itemSprite                   -itemSprite
    Maintainability Index: 79      Maintainability Index: 79     Maintainability Index: 79
    Cyclomatic Complexity: 6       Cyclomatic Complexity: 7      Cyclomatic Complexity: 7
    Class Coupling Index:  7       Class Coupling Index:  7      Class Coupling Index:  7

  -teamGame                       -teamGame                     -teamGame
    Maintainability Index: 72      Maintainability Index: 60     Maintainability Index: 62
    Cyclomatic Complexity: 12      Cyclomatic Complexity: 28     Cyclomatic Complexity: 30
    Class Coupling Index:  23      Class Coupling Index:  43     Class Coupling Index:  52

-------------------------------------------------------------------------------------------------
In Sprint 3, significant changes were made to class structures and complexity levels, which can be seen across key classes like EnemySprite, KeyboardContr, and teamGame.
Notably, KeyboardContr underwent major changes. Its maintainability index increased significantly (from 47 to 71 by the end of the sprint), with cyclomatic complexity reduced from 47 to 14, and class coupling index dropping from 46 to 12. This improvement suggests effective decoupling and simplification of control logic, aligning with the previous sprint’s objective to reduce reliance on other classes and improve maintainability. The EnemySprite class had a slight decline in maintainability index (from 78 to 73) but showed improvements in cyclomatic complexity, decreasing from 21 to 8. This indicates reduced branching in its methods, potentially due to refactoring that made its logic more streamlined. For teamGame, class coupling increased sharply by the end of the sprint. This rise maybe suggests additional dependencies were introduced, possibly as new game functionality or features were added. While this expanded functionality might be necessary, it may also indicate a need for further refactoring to manage complexity more effectively in future sprints. In summary, Sprint 3 shows improved maintainability in KeyboardContr due to decoupling, though teamGame now has increased complexity and coupling.
-------------------------------------------------------------------------------------------------

**************************************SPRINT 4******************************************
11/1/24 Code Analysis               11/6/24 Code Analysis        11/13/24 Code Analysis
  -EnemySprite                     -EnemySprite                 -EnemySprite
   Maintainability Index: 67        Maintainability Index: 67    Maintainability Index: 67
   Cyclomatic Complexity: 16        Cyclomatic Complexity: 16    Cyclomatic Complexity: 16
   Class Coupling Index:  16        Class Coupling Index:  16    Class Coupling Index:  16

  -Sprite                         -Sprite                       -Sprite
    Maintainability Index: 78      Maintainability Index: 78      Maintainability Index: 78
    Cyclomatic Complexity: 13      Cyclomatic Complexity: 13      Cyclomatic Complexity: 14
    Class Coupling Index:  12      Class Coupling Index:  12      Class Coupling Index:  12

  -KeyboardContr                  -KeyboardContr                -KeyboardContr
    Maintainability Index: 66      Maintainability Index: 66     Maintainability Index: 66
    Cyclomatic Complexity: 16      Cyclomatic Complexity: 16     Cyclomatic Complexity: 16
    Class Coupling Index:  14      Class Coupling Index:  14     Class Coupling Index:  14

  -itemSprite                     -itemSprite                   -itemSprite
    Maintainability Index: 79      Maintainability Index: 79     Maintainability Index: 85
    Cyclomatic Complexity: 7       Cyclomatic Complexity: 7      Cyclomatic Complexity: 5
    Class Coupling Index:  7       Class Coupling Index:  7      Class Coupling Index:  8

  -teamGame                       -teamGame                     -teamGame
    Maintainability Index: 62      Maintainability Index: 62     Maintainability Index: 56
    Cyclomatic Complexity: 37      Cyclomatic Complexity: 37     Cyclomatic Complexity: 46
    Class Coupling Index:  59      Class Coupling Index:  59     Class Coupling Index:  68

------------------------------------------------------------------------------------------
In sprint 4, there were some changes to various classes (including the five observed ones), but overall most of this sprint saw added functionality, with a bit of refactoring. This can be seen in our graphs, where maintainability slightly decreased for our Game 1 class, as expected with new functionality such as sound. ItemSprite functionality did go up, and this is liekly due to key changes we did in terms of refactoring (so as to use more factories), and such. Then, in terms of coupling, since we never got around to refactoring game 1 with dungeon manager, overall coupling went up (so that is something we should take a look at in the next sprint), but we did do some keybaord refactoring in game 1, which likely contributed to the slight decrease in coupling for game 1 mid-sprint. Lastly, other classes in general remained steady in both coupling and maintainability, which was our hopes (at the very least, we did not want the statistics to worsen, though we could still improve them). 
-----------------------------------------------------------------------------------------------

***************************************SPRINT 5*******************************************
11/25/24 Code Analysis               12/4/24 Code Analysis        12/8/24 Code Analysis
  -EnemySprite                     -EnemySprite                 -EnemySprite
   Maintainability Index: 67        Maintainability Index: 67    Maintainability Index: 61
   Cyclomatic Complexity: 38        Cyclomatic Complexity: 38    Cyclomatic Complexity: 63
   Class Coupling Index:  25        Class Coupling Index:  25    Class Coupling Index:  28

  -Sprite                         -Sprite                       -Sprite
    Maintainability Index: 78      Maintainability Index: 78      Maintainability Index: 78
    Cyclomatic Complexity: 13      Cyclomatic Complexity: 14      Cyclomatic Complexity: 14
    Class Coupling Index:  12      Class Coupling Index:  12      Class Coupling Index:  12

  -KeyboardContr                  -KeyboardContr                -KeyboardContr
    Maintainability Index: 66      Maintainability Index: 69     Maintainability Index: 69
    Cyclomatic Complexity: 16      Cyclomatic Complexity: 14     Cyclomatic Complexity: 14
    Class Coupling Index:  14      Class Coupling Index:  14     Class Coupling Index:  14

  -itemSprite                     -itemSprite                   -itemSprite
    Maintainability Index: 85      Maintainability Index: 85     Maintainability Index: 85
    Cyclomatic Complexity: 6       Cyclomatic Complexity: 6      Cyclomatic Complexity: 6
    Class Coupling Index:  8       Class Coupling Index:  8      Class Coupling Index:  8

  -teamGame                       -teamGame                     -teamGame
    Maintainability Index: 52      Maintainability Index: 52     Maintainability Index: 50
    Cyclomatic Complexity: 50      Cyclomatic Complexity: 51     Cyclomatic Complexity: 57
    Class Coupling Index:  68      Class Coupling Index:  69     Class Coupling Index:  72

------------------------------------------------------------------------------------------
Overall, there was an interesting shift in the maintainability and class coupling of our Zelda game. We finally got around to doing the refactoring of Game 1 into dungeon manager and room manager. We expected thus maintainability to decrease and class coupling to increase for the Game 1 class as a result, yet the opposite was observed; this indicates that perhaps our refactoring was not to the level that was needed, and that more refactoring in the future (if there was to be a next sprint). EnemySprite class coupling unfortunately also went up, but that was partly due to our implementation of the strategy pattern for enemy movement (so it was an expected increase); that did also highly increase our cyclomatic complexity from the 30s to the 60s, but again not to a worrying or unexpected point. Similarly, maintainability for the EnemySprite class also decreased.
In general though, most other classes stayed at the level they have been, which is good because we did not want to worsen our statistics, but it does tell us that there could me a lot more improvements in terms of refactoring and redesigning our zelda game. If we had future sprints that is what we would do, but as it stands the experience with this game are just ideas we will have to take forth with us when designing software in the future. 
------------------------------------------------------------------------------------------












